您现在的位置:首页 > 学术研究 > 读书笔记 > MFC结构一览
MFC结构一览
[发布时间:2003-07-20  阅读次数: 4117]
CObject类:CObject是MFC的根类,绝大多数MFC类是其派生的,CObject 实现了一些重要的特性,包括动态类信息、动态创建、对象序列化、对程序调试的支持,等等。CObject定义了一个CRuntimeClass类型的静态成员变量:CRuntimeClass classCObject,还定义了几组函数:构造函数析构函数类,诊断函数,与运行时类信息相关的函数,与串行化相关的函数。其中,一个静态函数:_GetBaseClass;五个虚拟函数:析构函数、GetRuntimeClass、Serialize、AssertValid、Dump。这些虚拟函数,在CObject的派生类中应该有更具体的实现。必要的话,派生类实现它们时可能要求先调用基类的实现,例如Serialize和Dump就要求这样。 静态成员变量 classCObject和相关函数实现了对CObjet特性的支持。

CcmdTarget类:是MFC类库中消息映射体系的一个基类。消息映射把命令或消息引导给用户为之编写的响应函数(命令是由菜单项、命令按钮或者加速键产生的消息)。从CCmdTarget继承来的按键框架类包括:CView、CWinApp、CDocument、CWnd和CFrameWnd。很少需要直接从CCmdTarget派生类。

CcmdThread类和CwinApp类:CWinThread对象代表在一个应用程序内运行的线程。运行的主线程通常由CWinApp的派生类提供;CWinApp由CWinThread派生。另外,CWinThread对象允许一给定的应用程序拥有多个线程。CWinThread支持两种线程类型:工作者线程和用户界面线程。工作者线程没有收发消息的功能:例如,在电子表格应用程序中进行后台计算的线程。用户界面线程具有收发消息的功能,并处理从系统收到的消息。CWinApp及其派生类是用户界面线程的例子。其它用户界面线程也可由CWinThread直接派生。CWinThread类的对象存在于线程的生存期。如果你希望改变这个特性,将m_bAutoDelete设为FALSE。要使你的代码和MFC是完全线程安全的,CWinThread类是完全必要的。框架使用的用来维护与线程相关的信息的线程局部数据由CWinThread对象管理。由于依赖CWinThread来处理线程局部数据,任何使用MFC的线程必须由MFC创建。

CWinThread::m_pMainWnd:保存指向应用程序的主窗口指针。

CWinThread::GetMainWnd:查询指向线程主窗口的指针。

CWinThread::InitInstance:重载以实现线程实例的初始化。

AfxGetApp:获得指向CWinApp对象的指针。

AfxGetInstanceHandle:获得当前应用程序实例的句柄。

AfxGetResourceHandle:获得应用程序资源的句柄。

AfxGetAppName:获得一个字符串指针,其中包含了应用程序的名字。另外,如果你拥有一个指向CWinApp对象的指针,可以通过m_pszExename来获得应用程序的名字。

CDocTemplate类:它定义了文档模板的基本函数功能。通常通过应用的InitInstance函数来实现创建一或多个文档模板。文档模板定义了三个类之间的关系。CDocTemplate是抽象类,不能直接使用,通常应用使用Microsoft基础类库提供的两种CDocTemplate派生类之一:CSingleDocTemplate用于SDI,CMultiDocTemplate用于MDI。

CDocument类:为用户定义的文档类提供了基本的函数功能。文档类表示了通常用于File Open命令打开和使用File Save命令保存的数据。CDocument支持标准操作,如创建、装载、保存等。框架用CDocument定义的界面来操作文档。应用可支持多种文档,例如文本文档和工作表。每种类型都有一个相关的文档模板。文档模板指定该类文档所使用的资源(如菜单、图标和加速符号表)。每个文档还含有一个CDocTemplate对象指针。用户通过与文档相联系的CView对象来与之交互。视图在框架窗口内生成一个文档图象,并解释作用于该文档之上的用户输入。一份文档可以有多个相关的视图,当用户在文档上打开一个窗口时,框架创建一个视图并将其与文档连接。文档模板为每类文档指定了用于显示的视图类型和框架窗口。文档作为窗口标准命令例程的一部分,接收标准用户界面组件的命令。文档在活动视图之后接收命令。如果文档未能处理指定的命令,则将其交给管理它的文档模板。当文档数据被修改时,各个视图都必须反应这些修改。CDocument提供了UpdateAllViews成员函数为视图通知这些变化。框架在关闭之前会提示用户必须存储修改后的文件。在一个典型的应用中生成一个文档,必须做到以下几点:

首页上一页下一页尾页当前为1/3页